Совместная сборка портала и расширений

Портал Semantic MDM поддерживает возможность совместной компиляции и сборки расширений вместе с базовым приложением. Такой подход сохраняет преимущества плагинной архитектуру со слабой связью между кодом портала и кодом расширений и дополнительно позволяет значительно уменьшить размер файлов расширений за счет совместной процедуры оптимизации сборки, а также повторного использования расширениями большей части модулей базового приложения (фабрик для создания компонентов и модулей).

Недостатком данного подхода является необходимость наличия кода базового приложения при сборке расширений, а также наличие ссылок в базовом приложении на расширения (пусть и на уровне конфигурации, а не кода), что противоречит концепции плагинной архитектуры. Также нужно иметь в виду, что после выхода новой версии портала Semantic MDM процедуру совместной компиляции придется перезапустить.

Процедура совместной компиляции состоит из следующих шагов:

Скопировать исходный код расширения в каталог src/built-in-plugins;

В файле конфигурации angular.jsonв раздел architect.build.options.lazyModules проекта sdi-web-client добавить ссылку на корневой модуль расширения (модуль, помеченный аннотацией @M2Plugin()) в формате:

"src/built-in-plugins/<путь_до_модуля>/<наименование_файла_модуля>.module"

Добавить ссылку на корневой модуль расширения в файле built-in-plugins-registry.ts в формате:

"src/built-in-plugins/<путь_до_модуля>/<наименование_файла_модуля>.module#< наименование_модуля>"

Запустить процесс сборки портала с расширениями:

gulp dist

По окончании сборки необходимо обновить дистрибутив портала Semantic MDM (dist/sdi-web-client.war) на стедне и активировать расширение на странице настроек в разделе Встроенные расширения клиента: